// 1.安装mongoose
// npm i mongoose
// 2.导入mongoose
const mongoose = require('mongoose');
// 3.链接mangodb服务(创建bilibli数据库)
mongoose.connect('mongodb://127.0.0.1:27017/bilibili');// mongodb协议://ip地址:端口号/数据库名称

// 4.设置回调 once 事件回调只执行一次
// 链接成功的回调函数
mongoose.connection.once('open', () => {
    // 5.创建文档的结构对象
    // 设置集合中文档的属性和属性值的类型
    let bookSchema = new mongoose.Schema({
        name: {
            type:String,
            required:true,//表示该属性不能为空(必填项)
            unique:true//将name属性设置为独一无二的(不会再添加相同的name文档属性)
        },
        author: {
           type: String,
            default:"匿名"//给作者设置匿名值
        },
        author_sex:{
            type:String,
            enum:["男","女"]//枚举形
        },
        price: Number,
        is_hot:Boolean,
        tags:Array,
        save_time:Date,
        test:mongoose.Schema.Types.Mixed//任意类型数据
    });
    // 6.创建模型对象,对文档操作的封装对象(用来完成文档的增删查改的操作，books--集合)
    let bookModel = mongoose.model('books', bookSchema);

    //7.新增
    bookModel.create({
        name: "红楼梦",
        author: "吴承恩",
        author_sex:"男",//这里的值必须是枚举数组中的值
        price: "50",
        is_hot:true,//是否是热销书籍
        tags:["鬼怪","打斗","励志"],//书籍标签
        save_time:new Date(),//时间
        test:"test"
    }).then((err, data) => {
        if (err) {
            console.log(err);//如果增加报错就输出
            return;
        }
        console.log(data);//
    });
});
//链接错误的回调函数
mongoose.connection.on('error', () => {
    console.log('连接失败~')
});
//链接关闭的回调函数
mongoose.connection.on('close', () => {
    console.log('连接关闭~')
});
//2秒后关闭链接
setTimeout(() => {
    mongoose.disconnect();
}, 2000);